// pages/nav/01/index.js
import {
  Event,
  Page_inset
} from "../../../pageEvent.js";
import $https from "../../../utils/api.js";
let App = getApp();
let that, page, limit;
App.$https = $https;
const innerAudioContext = wx.createInnerAudioContext({
  useWebAudioImplement: false
})
/**
 * class 继承 方式 对 页面数据初始化
 */
let _static = {
  /**
   * 页面的初始数据
   */
  data: {
    //  模板需要的数据
    is_loding: true,
    triggered: 0,
    //  detail 列表
    detail: {},
    /**
     * 定义校验规则
     */
    // tabs切换
    is_tabs: true,
    //  背景颜色
    bg_active: 0,
    old_bg: 0,
    limit: 1,
    c_bg: false, // 切换bg
    switch_bg: false, //立即许愿 
    change_input: false, //立即输入 
    f_text_ss: '写下你的愿望', // 第一句
    l_text_ss: '点击即可输入', // 第一句
    muisc: true,
    api: App.globalData.api,
    total: 0,
    c_index: 0,
  },
  init(options, page_inset, call) {
    if (wx.getStorageSync('scene') == 1155) {
      wx.setStorageSync('scene', '');
      wx.reLaunch({
        url: '/pages/start/index/index'
      })
      return;
    }

    that = this;
    page = 1;
    //播放背景音乐
    innerAudioContext.src = App.globalData.api + '/assets/w3/static/wxapp/bg.mp3';
    innerAudioContext.play();
    //  请求 获取页面 数据
    page_inset.initData("detail").then((res) => {
      let bg = wx.getStorageSync('bg');
      if (!bg) {
        bg = res.data.default_bg;
      }

      that.setData({
        bg: bg,
        share: res.data.share_data
      })
    });
    //获取屏幕支持弹幕条数
    let get_children_fnc = function (height) {
      this.getEl_fnc("#wn-roll-item1", function (res) {
        if (!Boolean(res)) {
          this.getEl_fnc("#wn-roll-item1", get_Fnc);
        } else {
          limit = height / (res.height);
          limit = parseInt(parseFloat(limit) - 3) || 1;
          console.log(limit, '当前limit,执行了一次');

          //  定时器请求

          this.timer_fnc(limit);
        }
      });

    }
    let get_Fnc = function (res, el, timer) {
      //  没获取到
      if (!res?.height) {
        clearTimeout(timer);
        //  判断一下 
        //   请求20次 
        // 20 次请求不到 清除定时器 && 停止 递归;
        this.setData({
          c_index: this.data.c_index += 1,
        });

        if (this.data.c_index <= 20) {
          this.getEl_fnc(el, get_Fnc);
        } else {
          // 获取不到元素 
          //  让用户重新进入小程序
        }

      } else {
        get_children_fnc.call(this, res?.height)
      }
    }
    //获取屏幕支持弹幕条数
    wx.nextTick(() => {
      this.getEl_fnc("#roll", get_Fnc)
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {


  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    //  如果不为null ,则清除定时器
    // 
    clearInterval(this.data.timer);
    //  
    //  第一请求
    this.getWishList(limit);
    //  动画 
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    //  页面卸载 清除定时器
    clearInterval(this.data.timer);
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    //  页面卸载 清除定时器
    clearInterval(this.data.timer);
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() { },
  //  获取
  //  滚动区域 高度
  getEl_fnc(el, c_fnc) {
    //  query 对象 
    let self_this = this;
    const query = wx.createSelectorQuery().in(this);
    //   获取元素 
    this.getEl_height(query, el, function (timer, result) {
      //  清除定时器
      //  如果  获取到 外层盒子的高度 

      if (typeof result?.height !== 'undefined') {
        c_fnc && c_fnc.call(self_this, result);
      } else {
        c_fnc && c_fnc.call(self_this, null, el, timer);
      }

    })
  },

  // 获取当前可用高度
  getEl_height(query, el, callback_fnc) {

    query
      .select(el)
      .boundingClientRect(function (res) {
        // 判断  res.height ? 是否 有值 
        // 没有 则重新执行
        if (res?.height) {
          callback_fnc && callback_fnc.call(this, '', res)
        } else {
          callback_fnc.call(this, false);
        }

      })
      .exec();
  },

  //  num  ++ 
  //  当前 项 爱心 + 1
  love_num_fnc(data) {
    let index = data.c_index;
    let wish_list = that.data.wish_list;
    that.setLike(wish_list, index);
  },
  //  点击文字打开弹窗 


  // 我的 背景弹窗 
  settingbgHandel() {
    this.setData({
      c_bg: !this.data.c_bg
    })
  },
  //  立即许愿
  nowmakeHandel() {
    //  立即许愿
    this.setData({
      switch_bg: !this.data.switch_bg
    })
  },

  //  change_input 
  change_inputHandel() {

    this.setData({
      change_input: !this.data.change_input
    })
  },
  //  失去焦点触发
  blurHandel({
    detail: {
      value
    }
  }) {
    console.log(value)
    let cutom_Fnc = () => {
      let f_index, l_index, f_text, l_text;
      //  判断字符  奇偶数
      //  偶数 
      if (value.length % 2 == 0) {
        f_index = value.length / 2;
        f_text = value.slice(0, f_index);
        l_text = value.slice(f_index, value.length);
      } else {
        // 基数 
        f_index = parseFloat(value.length / 2) + 1;
        f_text = value.slice(0, f_index);
        l_text = value.slice(f_index, value.length);
      }
      this.setData({
        f_text_ss: f_text ? f_text : '',
        l_text_ss: l_text ? l_text : ''
      })
      //   关闭 弹窗
      this.change_inputHandel();
    }
    //  验证 字符 是否是 12 个字符 
    value.length <= 12 && value.length > 0 ? cutom_Fnc() : wx.showToast({
      title: '12个字符以内',
      icon: 'none'
    });
    // 关闭弹窗

  },
  //  跳转 
  wishlistHandel() {
    wx.navigateTo({
      url: '/pages/wish_list/index',
    })
  },
  //更换背景
  replaceBg(e) {
    let bg = e.currentTarget.dataset.src;
    wx.setStorageSync('bg', bg);
    that.setData({
      bg: bg,
      c_bg: !this.data.c_bg
    })
  },
  //开关背景音乐
  setBgMuisc() {
    if (that.data.muisc) {
      innerAudioContext.pause()
    } else {
      innerAudioContext.play()
    }

    that.setData({
      muisc: !this.data.muisc
    })
  },
  //许愿
  makeWish() {
    if (that.data.f_text_ss == '写下你的愿望') {
      wx.showToast({
        title: '请输入愿望',
        icon: "none"
      })
    }
    let data = {
      left: that.data.f_text_ss,
      right: that.data.l_text_ss,
      content: that.data.f_text_ss + that.data.l_text_ss
    }
    App.$https.requestApi('/open/wx_app_api/makeWish', data).then(function (r) {
      if (r.code == 200) {
        that.setData({
          switch_bg: !that.data.switch_bg
        })
      }
      wx.showToast({
        title: r.msg,
        icon: 'none'
      })
    });
  },
  //弹幕获取
  getWishList(limit) {
    let data = {
      page: page,
      limit: limit
    }
    App.$https.requestApi('/open/wx_app_api/wishList', data).then(function (r) {
      if (r.code == 200) {
        that.setData({
          wish_list: r.data,
          total: r.total
        })
      }
    });
  },
  //点赞
  setLike(data, index) {
    let visit = data[index].visit;
    App.$https.requestApi('/open/wx_app_api/setLike', {
      data_id: data[index].id
    }).then(function (r) {
      if (r.code == 200) {
        data[index].visit = ++visit;
        console.log(data)
        that.setData({
          wish_list: data
        })
      }
    });
  },
  //分享
  onShareAppMessage() {
    return {
      title: that.data.share.share_title,
      path: '/pages/start/index/index',
      imageUrl: that.data.share.share_cover ? that.data.share.share_cover : ""
    }
  },
  //分享朋友圈
  onShareTimeline() {
    return {
      title: that.data.share.share_title
    }
  },
  // 定时器 获取limit
  timer_fnc(limit, delayed = 10000) {
    // 动画播放 19s 
    // 播放到8s 的时候 请求第二组数组
    let that = this;
    clearInterval(that.data.timer);
    let timer = setInterval(function () {
      // 请求
      try{
        page++;
        that.getWishList(limit)
      }catch{

      }
    }, delayed);
    //  存储定时器
    that.setData({
      timer: timer,
    })
  },

  //  动态创建动画

};
Page(Object.assign(_static, Event, {}));